using System.Collections.Generic;
using Sinacor.Servico.Bovespa.Parametro.Service.DataContract.Request;
using Sinacor.Servico.Bovespa.Parametro.BusinessEntity;
using Sinacor.Servico.Bovespa.Parametro.Service.DataContract.Request;

namespace Sinacor.Servico.Bovespa.Parametro.Service.ServiceImplementation.Translator.DataContractToBusinessEntity
{
	public class ParametroBolsa 
    {

		public ParametroBolsa(){}

		public List<BusinessEntity.Parameter.FiltroTipoNota> ToFiltroTipoNota(List<DataContract.Request.FiltroTipoNotaRequest> requestList)
        {
            List<BusinessEntity.Parameter.FiltroTipoNota> to = new List<Sinacor.Servico.Bovespa.Parametro.BusinessEntity.Parameter.FiltroTipoNota>();
           
			return to;
		}

		public BusinessEntity.ParametroBolsa ToParametroBolsa(DataContract.Request.ParametroBolsaRequest request)
        {
            BusinessEntity.ParametroBolsa to = new Sinacor.Servico.Bovespa.Parametro.BusinessEntity.ParametroBolsa();
            
            to.AgrupaNota = request.AgrupaNota;
            to.BaseLiquido = request.BaseLiquido;
            to.CaminhoNota = request.CaminhoNota;
            to.Comissao = request.Comissao;
            to.Correspondente = request.Correspondente;
            to.EnviaAgente = request.EnviaAgente;
            to.EnviaCarteira = request.EnviaCarteira;
            to.IntegraContabilidade = request.IntegraContabilidade;
            to.IntegraContasCorrentes = request.IntegraContasCorrentes;
            to.IntegraCustodia = request.IntegraCustodia;
            to.IntegraTesouraria = request.IntegraTesouraria;
            to.LiquidoNota = request.LiquidoNota;
            to.Mensagem = request.Mensagem;
            to.NumeraNota = request.NumeraNota;
            to.SemOperacao = request.SemOperacao;
            to.UltimaNotaEmitida = request.UltimaNotaEmitida;
            to.ZeraNota = (BusinessEntity.Enum.TipoPeriodo) request.ZeraNota;

			return to;
		}

		public BusinessEntity.Parameter.FiltroTipoNota ToFiltroTipoNota(DataContract.Request.FiltroTipoNotaRequest request)
        {
            BusinessEntity.Parameter.FiltroTipoNota to = new Sinacor.Servico.Bovespa.Parametro.BusinessEntity.Parameter.FiltroTipoNota();
            to.Cpmf = request.Cpmf;
			return to;
		}

		public List<BusinessEntity.ParametroBolsa> ToParametroBolsa(List<DataContract.Request.ParametroBolsaRequest> requestList)
        {
            List<BusinessEntity.ParametroBolsa> to = new List<Sinacor.Servico.Bovespa.Parametro.BusinessEntity.ParametroBolsa>();

            foreach(ParametroBolsaRequest item in requestList)
            {
                to.Add(ToParametroBolsa(item)); 
            }
            return to;
		}

		public BusinessEntity.TipoNota ToTipoNota(DataContract.Request.TipoNotaRequest from)
        {
            BusinessEntity.TipoNota to = new Sinacor.Servico.Bovespa.Parametro.BusinessEntity.TipoNota();
            
            to.AgenteDiaCredito = from.AgenteDiaCredito;
            to.AgenteDiaDebito = from.AgenteDiaDebito;
            to.AgenteEstornoCredito = from.AgenteEstornoCredito;
            to.AgenteEstornoDebito = from.AgenteEstornoDebito;

            to.AjusteNegocioDiaCredito = from.AjusteNegocioDiaCredito;
            to.AjusteNegocioDiaDebito = from.AjusteNegocioDiaDebito;
            to.AjusteNegocioEstornoCredito = from.AjusteNegocioEstornoCredito;
            to.AjusteNegocioEstornoDebito = from.AjusteNegocioEstornoDebito;

            to.AjustePosicaoDiaCredito = from.AjustePosicaoDiaCredito;
            to.AjustePosicaoDiaDebito = from.AjustePosicaoDiaDebito;
            to.AjustePosicaoEstornoCredito = from.AjustePosicaoEstornoCredito;
            to.AjustePosicaoEstornoDebito = from.AjustePosicaoEstornoDebito;

            to.NumeroDiasLiquidacao = from.NumeroDiasLiquidacao;

            to.Cpmf = from.Cpmf;
            to.DayTradeDiaCredito = from.DayTradeDiaCredito;
            to.DayTradeDiaDebito = from.DayTradeDiaDebito;
            to.DayTradeEstornoCredito = from.DayTradeEstornoCredito;
            to.DayTradeEstornoDebito = from.DayTradeEstornoDebito;

            to.DescricaoTipoNota = from.DescricaoTipoNota;
            to.IrOperacoesDiaDebito = from.IrOperacoesDiaDebito;
            to.IrOperacoesEstornoCredito = from.IrOperacoesEstornoCredito;
            to.NotaCorretagemDiaCredito = from.NotaCorretagemDiaCredito;

            to.NotaCorretagemDiaDebito = from.NotaCorretagemDiaDebito;
            to.NotaCorretagemEstornoCredito = from.NotaCorretagemEstornoCredito;
            to.NotaCorretagemEstornoDebito = from.NotaCorretagemEstornoDebito;
            to.CodigoTipoNota = from. TipoNota;

			return to;
		}

		public List<BusinessEntity.TipoNota> ToTipoNota(List<DataContract.Request.TipoNotaRequest> requestList)
        {
            List<BusinessEntity.TipoNota> to = new List<Sinacor.Servico.Bovespa.Parametro.BusinessEntity.TipoNota>();

            foreach(TipoNotaRequest item in requestList)
            {
                to.Add(ToTipoNota(item)); 
            }
            return to;
		}
	}
}